Subject: Update circuit collision

From: Bernard Brady <[email-masked]>
Date: Thu, 4 Nov 93 10:21:52 EDT

The following is my second attempt to  write what I think should happen. 
Can you please correct this flow or explain  where in the RFC FSM this
case is handled. 

In the first proposal I left out the ICANREACH and REACH_ACK but
realized that the establishment of Circuit IDs require these.

Thank You

Bernie Brady

Circuit Establishment Collision

    LAN             Origin DLSw    Origin DLSw         LAN

                |   DISCONNECTED |  DISCONNECTED    | Note: 1         |               
|                  |
                |                |                  |     <---TEST
 TEST--->       |                |                  |
                |                |                  <--DLC_RESOLVE_C
 DLC_RESOLVE_C-->                |                  |
                |                <--CANUREACH       |
                |     CANUREACH-->                  |
                |                |                  | Note: 2         |               
|                  |
                |     ICANREACH-->                  |
                |                <--ICANREACH       |
                |                |                  |
                |                |                  | Note: 3         |               
|                  |
                |                <--REACH_ACK       |
                |     REACH_ACK-->                  |
                |                |                  |
                |                |                  |
                <--DLC_RESOLVE_R |    DLC_RESOLVE_R->
                |                |                  |
  <--TEST       |                |                  |    TEST--->
                |                |                  | Note: 4         |               
|                  |
                |[CIRCUIT_PNDING]| [CIRCUIT_PNDING] |
                |                |                  |
                | [CIRCUIT_ESTAB]| [CIRCUIT_ESTAB]  |

Note 1.	Once the TEST  frame has been received both LANs present a
DLC_RESOLVE_C request to their associated DLSw.  On receiving a
DLC_RESOLVE_C request both DLSw's search their destination table caches
for a matching destination MAC address.  If one is found they forwards a
CANUREACH request to the associated target DLSw.  If one is not found
then they forward a CANUREACH request to each of their designated target
DLSw's.

Note 2.	On receiving a CANUREACH request and identify that it
has a CANUREACH outstanding  for the opposite Data Link ID both
DLSws respond with an ICANREACH.  Any other  CANUREACH requests for the
opposite Data Link ID are ignored. 

Note 3.	When the each  DLSw receives the ICANREACH response it places
the circuit into the CIRCUIT_PENDING state and responds with a REACH_ACK
to the other DLSw. In the process of sending REACH_ACK the DLSw will
also send a DLC_RESOLVE_R response to the data link interface.   This
informs the data link interface to respond to the  original TEST 
request which started the route discovery process.

Note 4.	On receipt of the REACH_ACK each DLSw places the circuit into
the CIRCUIT_ESTAB state and stops the non-REACH_ACK response timer.

Also noted is that XID could replace the TEST for initiating this circuit
establishment.

---

From: Lakshman Garikapaty <[email-masked]>
Date: Thu, 10 Feb 94 07:42:11 PST

Hi Bernie,

   I am tad confused with the following data flow:

>> <--REACH_ACK(OriginCirID=1001, TargetCirID=3003)   Frame Direction = 0x01
>> (OriginCirID=3003, TargetCirID=1001)REACH_ACK--> Frame Direction = 0x01
  
  According to the RFC, the box that initiated Canureach sets up the Frame
direction to 01 and the box replying to the canureach will use 02. If both
the boxes are using 01 then you should have two circuits ie. you should
have allocated two control blocks.

  I think we should resolve the collision as soon as we receive the canureach
msgs. I would like to propose that the backoff algorithm should be based on
the IP address of the two partners. The lower IP address wins ie. the box
with lower IP address will ignore the Canureach and the box with higher IP
address will respond with Icanreach msg. This method is better than checking
for MAC address and will work for all data links ie. SDLC-SDLC case where there 
is no concept of Mac addresses.

 Thanks.

 Lakshman.